﻿// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证（版本 2.0）进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动！任何基于本项目二次开发而产生的一切法律纠纷和责任，我们不承担任何责任！

namespace WCS.Application.Service.Rcs;
public class BaseRequest
{
    /// <summary>
    /// 任务唯一标识（必填）
    /// </summary>
    public string? TaskId { get; set; }

    /// <summary>
    /// AGV设备编号（必填）
    /// </summary>
    public string? AgvCode { get; set; }

    /// <summary>
    /// AGV当前位置
    /// </summary>
    public string? AgvCurrentPos { get; set; }

    /// <summary>
    /// 起始位置
    /// </summary>
    public string? Startcoord { get; set; }

    /// <summary>
    /// 目标楼层（≥1）
    /// </summary>
    public int TargetFloor { get; set; }

    /// <summary>
    /// 目标可行走坐标（路径终点，如"24,12"）
    /// </summary>
    public string? TargetPointCoord { get; set; }

    /// <summary>
    /// 目标库位坐标（不可行走，如"25,12"）
    /// </summary>
    public string? StoragePosCoord { get; set; }
     
    /// <summary>
    /// 托盘码
    /// </summary>
    public string? Palletcode { get; set; }

    /// <summary>
    /// 入库或出库
    /// </summary>
    public string? Agvtype { get; set; }

    /// <summary>
    /// AGV移动速度（默认1）
    /// </summary>
    public int Speed { get; set; } = 1;
    /// <summary>
    /// 调度货物点位
    /// </summary>
    public string? DispatchCoord { get; set; }

    /// <summary>
    /// 调度货物库位
    /// </summary>
    public string? DispatchPosCoord { get; set; }
}

public class InboundRequest : BaseRequest
{
    /*public new string StoragePosCoord { get; set; } // 入库目标库位坐标（不可行走）
    public new string TargetPointCoord { get; set; } // 入库目标可行走坐标（路径终点）*/
}

public class OutboundRequest : BaseRequest
{
    public string SourceStoragePosCoord { get; set; } // 出库源库位坐标（不可行走）
    /* public new string TargetPointCoord { get; set; }   // 出库目标可行走坐标（路径终点）*/
    public string ExitPos { get; set; }                // 出库终点坐标（可行走）
}
// 调货专用请求类
public class DispatchRequest : BaseRequest
{
    public string DispatchCoord { get; set; } // 调货货物点位（源点位）
    public string DispatchPosCoord { get; set; } // 源库位坐标
    public string TargetPointCoord { get; set; } // 目标货物点位
    public string StoragePosCoord { get; set; } // 目标库位坐标
}